home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
151-175
/
scopedisk168
/
asmmacros
/
am_02
/
allocmem.i
next >
Wrap
Text File
|
1995-03-19
|
2KB
|
77 lines
NOLIST
AllocMem MACRO ; 13 Sept 88
*------------------------------; Start of AllocMem macro.
NOLIST
IFC "\2","D" ; If \3 uses direct mode, then.
LIST
; Put the block size in D0.
MOVE.L #\3,D0
NOLIST
ENDC
IFC "\2","I" ; If \3 uses indirect mode, then.
LIST
; Put the block size in D0.
NOLIST
IFEQ ReEntrant-1
LIST
MOVE.L \3(A5),D0
NOLIST
ENDC
IFNE ReEntrant-1
LIST
MOVE.L \3,D0
NOLIST
ENDC
ENDC
LIST
; Save the block size at <MemBlockName>.Size
NOLIST
IFEQ ReEntrant-1
LIST
DefDS \1.Size,1
MOVE.L D0,\1.Size(A5)
NOLIST
ENDC
IFNE ReEntrant-1
LIST
MOVE.L D0,\1.Size
DS_BSS \1.Size,1,.L
NOLIST
ENDC
IFNE NARG-4 ; If \4 is not given, then
LIST
CLR.L D1 ; Accept any memory.
NOLIST
ENDC
IFEQ NARG-4 ; If \4 is given, then
PUBLIC SET 1
CHIP SET 2
CLEAR SET $10000
LIST
; Set the appropriate bits in D1.
MOVE.L #\4,D1
NOLIST
ENDC
LIST
CallLib AllocMem,exec ; Call AllocMem.
; Save the address of the memory block at
; <MemBlockName>.Adr
NOLIST
IFEQ ReEntrant-1
LIST
DefDS \1.Adr,1
MOVE.L D0,\1.Adr(A5)
NOLIST
ENDC
IFNE ReEntrant-1
LIST
MOVE.L D0,\1.Adr
DS_BSS \1.Adr,1,.L
NOLIST
ENDC
LIST
TST.L D0 ; Make the zero flag indicate failure.
*------------------------------; End of AllocMem macro.
ENDM
LIST